Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
C# / VB.NET - [VB.NET] qual'è il migliore??
Forum - C# / VB.NET - [VB.NET] qual'è il migliore??

Avatar
walker93 (Member)
Expert


Messaggi: 460
Iscritto: 31/01/2010

Segnala al moderatore
Postato alle 15:44
Giovedì, 25/02/2010
mi è sorta una domanda alla quale devo rispondere assolutamente:
tra usare lo IO.stream reader e file.readalltext cosa mi consigliate???
Es. stramreader:
Codice sorgente - presumibilmente VB.NET

  1. Dim sr As New IO.StreamReader(My.Computer.FileSystem.SpecialDirectories.MyDocuments & "\strane let.txt")
  2. While sr.EndOfStream = False
  3.     TextBox1.Text += sr.ReadLine
  4. End While
  5. sr.Close()



Es. readalltext:
Codice sorgente - presumibilmente Plain Text

  1. TextBox2.Text = IO.File.ReadAllText(My.Computer.FileSystem.SpecialDirectories.MyDocuments & "\strane let.txt")



P.S. io ho sempre usato il secondo...

PM Quote
Avatar
LittleHacker (Member)
Guru


Messaggi: 1033
Iscritto: 28/04/2009

Segnala al moderatore
Postato alle 16:31
Giovedì, 25/02/2010
Testo quotato

Postato originariamente da walker93:

mi è sorta una domanda alla quale devo rispondere assolutamente:
tra usare lo IO.stream reader e file.readalltext cosa mi consigliate???
Es. stramreader:
Codice sorgente - presumibilmente VB.NET

  1. Dim sr As New IO.StreamReader(My.Computer.FileSystem.SpecialDirectories.MyDocuments & "\strane let.txt")
  2. While sr.EndOfStream = False
  3.     TextBox1.Text += sr.ReadLine
  4. End While
  5. sr.Close()



Es. readalltext:
Codice sorgente - presumibilmente Plain Text

  1. TextBox2.Text = IO.File.ReadAllText(My.Computer.FileSystem.SpecialDirectories.MyDocuments & "\strane let.txt")



P.S. io ho sempre usato il secondo...



Beh...x velocità di scrittura(codice) ti consiglio il secondo ma se vuoi una cosa fatta bene io ti consiglio il 1°...
P.S: While sr.EndOfStream = False puoi scriverlo anche(ed è meglio): While Not sr.EndOfStream :k:

Ultima modifica effettuata da LittleHacker il 25/02/2010 alle 16:32
PM Quote
Avatar
walker93 (Member)
Expert


Messaggi: 460
Iscritto: 31/01/2010

Segnala al moderatore
Postato alle 17:32
Giovedì, 25/02/2010
ma ho provato sia uno che l'altro
a me sembra che il secondo rispetti la formattazione...



walker93 ha allegato un file: Immagine.GIF (34624 bytes)
Clicca qui per guardare l'immagine
PM Quote
Avatar
LittleHacker (Member)
Guru


Messaggi: 1033
Iscritto: 28/04/2009

Segnala al moderatore
Postato alle 17:54
Giovedì, 25/02/2010
Testo quotato

Postato originariamente da walker93:

ma ho provato sia uno che l'altro
a me sembra che il secondo rispetti la formattazione...




Si...allora utilizza il secondo...io ho sempre utilizzato il primo...poi fai come vuoi...:k::k::rotfl:

PM Quote
Avatar
Il Totem (Admin)
Guru^2


Messaggi: 3635
Iscritto: 24/01/2006

Segnala al moderatore
Postato alle 13:31
Venerdì, 26/02/2010
Non è questo. E' che ReadLine() legge una linea e restituisce una stringa che la rappresenti, ma senza il carattere a capo in fondo (lo devi aggiungere manualmente).

Astraendo i metodi dal contesto della textbox, potrei fare le seguenti considerazioni:

Sostanzialmente, entrambi i metodi adottano la stessa metodologia: aprono il file, leggono tutte le linee, quindi chiudono il file. Le prestazioni, quindi, non sono poi molto distanti. L'unica cosa che possiamo ipotizzare è che ReadAllText restituisce un'unica stringa e quindi oltre a leggere una linea, deve anche concatenare il testo letto con i nuovi dati. Dato che la concatenazioni di stringhe è un'operazione abbastanza lenta, potrebbe essere leggermente meno veloce del primo. Questo ragionamento vale se ReadAllText usa l'operatore & per la concatenazione. Se supponiamo che utilizzi uno StringBuilder, allora il tempo di concatenazione si riduce sensibilmente, ma si aggiunge il tempo impiegato a convertire i dati in stringa tramite ToString().

Ritornando al contesto corrente, tuttavia, il primo esempio usa anch'esso una concatenazione, sulla proprietà TextBox1.Text. Oltre ad essere poco efficiente poiché si usa l'operatore + (solo minimamente più veloce di &), si tratta di una proprietà, e quindi di un campo mediato da funzione, che implica una chiamata e un'allocazione di memoria per il record di attivazione. Senza contare che la chiamata avviene da un oggetto, che ogni volta deve essere indirizzato nell'heap managed (l'accesso a una variabile globale è meno veloce dell'accesso a una variabile locale, e l'accesso a un oggetto è meno veloce dell'accesso a un dato value).

Forse ho esagerato un pochino :rotfl:

PM Quote
Avatar
walker93 (Member)
Expert


Messaggi: 460
Iscritto: 31/01/2010

Segnala al moderatore
Postato alle 16:47
Venerdì, 26/02/2010
:-|:-|:-|:-|:-|:-|:-|:-|
oooook, quindi in poche parole???


PM Quote